#有参数的被装饰器的函数
#标准装饰器
def outers(fun) : #标准修饰器
    def inners(x):
        print("基础代码")
        fun(x)
    return inners
#被装饰器装饰的函数
@outers
def t1(x):
    print(f"新增函数1,{x}")
@outers
def t2(x):
    print(f"新增函数2,{x}")
#调用
t1("有参数的函数1") #t1相当于外层函数的参数fun,t1的参数相当于内层函数的x,内层函数调用fun的时候相当于在调用t1,但t1是有参数的
t2("有参数的函数2")
#可以简单理解,被语法糖修饰的函数,必须跟修饰器的内层函数参数一致
#多个装饰器
#被多个语法糖装饰的函数,里函数最近的装饰器先装饰,然后结果作为远的装饰器装饰的函数再装饰一次
#第二个装饰器
def outers1(fun) : #标准修饰器2
    def inners1(x):
        print("基础代码2")
        fun(x)
    return inners1
#被装饰器装饰的函数
@outers
@outers1
def t3(x):
    print(f"新增函数3,{x}")
print("----------")
t3("有参数的函数3")

